<?php
load()->library('database');

#### SQLITE LIBRARY ############################################################
class SQLiteLibrary extends DatabaseLibrary { 

	private $connection;
	private $result;
	
	#### GET CONNECTION ########################################################
	public function getConnection() { return $this->connection; }
	
	#### SET CONNECTION ########################################################
	public function setConnection($resource) { $this->connection = $resource; }	
	
	#### CONNECT ###############################################################
	public function connect($database) { 
		$this->connection = new SQLite3($database);
	}	

	#### NAME ##################################################################
	public function name($database) { die('SQLite does not need name()'); }

	#### ERROR CODE ############################################################
	public function errorCode() { return $this->connection->lasetErrorCode(); } 

	#### ERROR MESSAGE #########################################################
	public function errorMessage() {
		$error_message = $this->connection->lastErrorMsg();
		if ($error_message != 'not an error')
		 return $error_message;
	} 

	#### ESCAPE STRING #########################################################
	public function escapeString($string) { 
		return $this->connection->escapeString($string); 
	} 

	#### QUERY #################################################################
	public function query($sql = false) {
		$this->endSQL();
		if (!$sql) $sql = $this->getSQL();
		$this->result = $this->connection->query($sql);
		$this->setSQL();
		return $this->result;
	} 

	#### FETCH ARRAY ###########################################################
	public function fetchArray($mode = 'both') { 
		if ($mode = 'assoc') $mode = SQLITE_ASSOC;
		else if ($mode = 'num') $mode = SQLITE_NUM;
		else if ($mode = 'both') $mode = SQLITE_BOTH;
		if ($this->result) return $this->result->fetchArray($mode);
	}
	
	#### FETCH RESULT ARRAY ####################################################
	public function fetchResultArray($mode = 'both') {
		$array = array();		
		while ($row = $this->fetchArray($mode)) $array[] = $row;
		return $array;
	}	

	#### FETCH ROW #############################################################
	public function fetchRow() { 
		return $this->fetchArray($this->result, 'num'); 
	}	

	#### FETCH ASSOC ###########################################################
	public function fetchAssoc() { 
		return $this->fetchArray($this->result, 'assoc'); 
	} 
	
	#### FETCH OBJECT ##########################################################
	public function fetchObject() { return sqlite_fetch_object($this->result); }
	
	#### FETCH OBJECT ARRAY ####################################################
	public function fetchObjectArray() {
		$array = array();
		while ($row = $this->fetchObject()) $array[] = $row;
		return $array;
	}
	
	#### CHANGES ###############################################################
	public function changes() { return $this->connection->changes; }
	
	#### INSERT ID #############################################################
	public function insertID() { return $this->connection->lastInsertRowID; }	

	#### CLOSE #################################################################
	public function close() { return $this->connection->close(); }
}
?>